AWS Lambdaファンクションを開発するときはNode.jsのバージョンにご注意を
はじめに
東京リージョンも来て、さらに盛り上がっているAWS Lambda。 ただ、そんな時、Node.jsのバージョンを気にしておく必要があります。
AWS Lambdaが動くNode.jsのバージョンは・・・
公式ドキュメントを見ればわかるのですが、 AWS Lambda上で動いているNode.jsのバージョンは、v0.10.33 となります。 また、現行公式サイトからダウンロードできるNode.jsはv0.12.6のため、かなり乖離があることがわかります。
Promiseが使えない
Angular.jsで開発している方には既にお馴染みのPromiseがNode.jsでも実装されています。 しかし、使えるのはv0.12以降のため、Lambda上では使うことができません。 使おうとすると以下の様なエラーが出ます。
{ "errorMessage": "Process exited before completing request" }
もし、Promiseを使いたい場合は、bluebird等の実装がありますので、 そちらを組み込んだ上で動かすことでPromiseを用いた実装をすることが可能です。
$ npm install -save bluebird
app.js
var Promise = require("bluebird");
ローカルでLambdaファンクションを実行したい。
参考元の記事そのままなのですが、下記のようなドライバを作成することで、 ローカルでLambdaファンクションを実行することが可能です。 また、doneの中のdataを参照することで処理の結果の確認も可能です。
driver.js
// We will put dummy objects for event and context; var event = {}; var context = { // InvokeID may be unique invocation id for AWS Lambda. invokeid: 'string', // context.done() should be called for end of each invocation. // We would want to stub this. done: function(err,data){ console.log(data); return; } }; // Then we can load and run your function. var yourLambdaFunction = require('./app'); yourLambdaFunction.handler(event,context);
$ node driver.js
まとめ
Node.jsのバージョンので発生する障害と、ぷちtipsのご紹介でした。